export default {
	/**
	* @function addEventListener 添加句柄
	* @param {object} element DOM元素引用
	* @param {string} type 事件名称
	* @param {function} handler 事件处理函数
	* @param {boolean} options.capture 
	* @param {boolean} options.passive 
	**/
	addEventListener(element, type, handler, { capture = false, passive = false }) {
		if ('function' === typeof element.addEventListener) {
			element.addEventListener(type, handler, { passive: passive, capture: capture });
		}
	},

    /**
     * @function removeEventListener 删除句柄
     * @param {object} element DOM元素引用
     * @param {string} type 事件名称
     * @param {function} handler 事件处理函数的名称
     * @param {boolean} options.capture 
     * @param {boolean} options.passive  
     * @description 匿名的事件处理函数不能删除
     **/
	removeEventListener(element, type, handler, { capture = false, passive = false }) {
		if ('function' === typeof element.removeEventListener) { 
			element.removeEventListener(type, handler, { passive: passive, capture: capture });
		}
	},

    /**   
     * @function dispatchEvent 触发事件
     * @param {object} element DOM元素
     * @param {string} type 触发的事件类型 
     * @param {callback} callback 触发的之后的
	 * dispatchEvent 别名 fakedEventModel
     **/
	emitEventListener(element, type, faked) {
		if ('function' !== document.createEvent) {
			return {};
		}
		const evt = document.createEvent('HTMLEvents');

		evt.initEvent(type, true, true);
		if (faked) {
			evt.target = element;
			evt.srcElement = element;
			evt.emited = true;
			return evt;
		} else {
			evt.emited = element.dispatchEvent(evt);
		}

		return evt;
	}
}
